﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using SIGERP_Negocio;
using SIGERP_Entidades;

namespace SIGERP_Presentacion
{
    public partial class frmSubtipoReclamoAgregar : Form
    {
        private ErrorProvider ep = new ErrorProvider();
        
        public frmSubtipoReclamoAgregar()
        {
            InitializeComponent();
        }

        public frmSubtipoReclamoAgregar(String subtipo_reclamo)
        {
            InitializeComponent();
            txtDescripcion.Text = subtipo_reclamo;
        }

        private void frmSubtipoReclamoAgregar_Load(object sender, EventArgs e)
        {
            List<TipoReclamo> tipos = TiposReclamo.buscarTiposHabilitados();
            foreach (TipoReclamo tr in tipos)
            {
                cmbTipo.Items.Add(tr);
            }
            
            if (tipos.Count>0)
            cmbTipo.SelectedIndex = 0;

            List<Departamento> dtos = Departamentos.buscarDepartamentosHabilitados();
            foreach (Departamento d in dtos)
            {
                cmbDepartamento.Items.Add(d);
            }

            if (dtos.Count > 0)
            cmbDepartamento.SelectedIndex = 0;

            cmbTipo.Width = Utilities.adjustWidth(cmbTipo);
            cmbDepartamento.Width = Utilities.adjustWidth(cmbDepartamento);
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            ep.Clear();

            if (txtDescripcion.Text.Equals(""))
            {
                ep.SetError(txtDescripcion, "Este campo es obligatorio");
                txtDescripcion.Focus();
                return;
            }

            try
            {
                if (((TipoReclamo)cmbTipo.SelectedItem).id <= 0)
                {
                    ep.SetError(cmbTipo, "Debe elegir un Tipo de reclamo.");
                    cmbTipo.Focus();
                    return;
                }
            }
            catch
            {
                ep.SetError(cmbTipo, "Debe elegir un Tipo de reclamo.");
                cmbTipo.Focus();
                return;
            }

            try
            {
                if (((Departamento)cmbDepartamento.SelectedItem).id <= 0)
                {
                    ep.SetError(cmbDepartamento, "Debe elegir un Departamento.");
                    cmbDepartamento.Focus();
                    return;
                }
            }
            catch
            {
                ep.SetError(cmbDepartamento, "Debe elegir un Departamento.");
                cmbDepartamento.Focus();
                return;
            }

            SubtipoReclamo st = new SubtipoReclamo(txtDescripcion.Text);
            st.tipo = (TipoReclamo)cmbTipo.SelectedItem;
            
            if (SubtiposReclamo.validarSiExiste(st))
            {
                MessageBox.Show("El subtipo ingresado ya existe", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
            }
            else
            {
                guardarSubtipo(st);
            }

            
        }

        private void guardarSubtipo(SubtipoReclamo st)
        {
            st.departamento = (Departamento)cmbDepartamento.SelectedItem;
            SubtiposReclamo.nuevo(st);
            Close();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void toolStripAyuda_Click(object sender, EventArgs e)
        {
            Utilities.mostrarAyuda(this, (this.GetType().ToString() + ".htm").Replace("SIGERP_Presentacion.", ""));
        }

    }
}
